A conventional laser printer generally includes a print engine, an input interface for receiving data to be printed, and a processor that supplies data to the print engine in response to the received input data. The input data conventionally includes instructions conforming to a page description language (PDL), such as PCL printer control language, marketed by Hewlett Packard, or the Postscript page description language, marketed by Adobe Systems. Due to the variety of instructions available in a PDL, a program written to process PDL instructions (a PDL interpreter) is usually fairly large, for example, on the order of 2 MByte. Storage of such a PDL interpreter program is conventionally provided in the printer in read only memory (ROM).
Generally two types of memory are used in the conventional laser printer. Programs having instructions to be executed by the processor, for example, may be stored in ROM or read/write memory; while variables used by the program (including data received to be printed) is stored in read/write memory. Memory systems are expandable so that the factory or user may add support for "built-in" features by adding additional preprogrammed ROM modules. Support for processing large amounts of data to be printed on a single sheet may be expanded by the factory or user by adding random access memory (RAM) modules for the read/write memory functions.
Generally, ROM access time is longer than the access time for RAM. Therefore, program instructions fetched from a ROM (e.g. for a PDL interpreter) will execute slower than program instructions fetched from a RAM. RAM, however, generally costs more than ROM. Although a user may add RAM to a printer, for example, to print complex images and to store a downloaded PDL interpreter (located in RAM for higher execution speed) the PDL interpreter may take up a great deal of RAM, offsetting the ability of the printer to print complex images.
Without methods and systems of the present invention, the ability of a user to expand the capability of a printer will be limited. Users expect printers to print more complex images and interpret more complex PDLs. Cost and system reliability constraints, among other factors, limit the ability to meet these demands by simply adding RAM. Without the ability to expand printer capability in response to system software expansion, conventional printers become obsolete too quickly.
In view of the problems described above and related problems, the need remains particularly in printers, and generally in processors, for systems and methods of efficiently storing and executing programs.